#define _CRT_SECURE_NO_WARNINGS 1


//#include<stdio.h>
//#include<assert.h>
//int my_strlen1(const char* arr)
//{
//	assert(arr);
//	int count = 0;
//	while (*arr)
//	{
//		count++;
//		arr++;
//	}
//	return count;
//}
//
//int my_strlen2(const char* arr)
//{
//	assert(arr);
//	char* end = arr;
//	while (*end != '\0')
//	{
//		end++;
//	}
//	return end - arr;
//}
//
//int my_strlen(const char* arr)
//{
//	assert(arr);
//	if (*arr == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(arr + 1);
//}
//
//int main()
//{
//	char arr[] = "abcdefgh";
//	printf("%d\n", my_strlen(arr));
//	printf("%d\n", my_strlen1(arr));
//	printf("%d\n", my_strlen2(arr));
//	return 0;
//}

//#include<stdio.h>
//#include<assert.h>
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	int start = dest;
//	while (*dest++ = *src++);
//	return start;
//}
//
//int main()
//{
//	char arr1[] = "abcdefd";
//	char arr2[] = "XXXXXXXXXX";
//	my_strcpy(arr2, arr1);
//	printf("%s\n", arr2);
//	return 0;
//}

//#include<stdio.h>
//#include<assert.h>
//int my_strcmp(const char* arr1, const char* arr2)
//{
//	assert(arr1 && arr2);
//	while (*arr1 == *arr2)
//	{
//		if (arr1 == '\0')
//			return 0;
//		arr1++;
//		arr2++;
//	}
//	return *arr1 - *arr2;
//}
//
//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abdd";
//	printf("%d", my_strcmp(arr1, arr2));
//	return 0;
//}

//#include<stdio.h>
//#include<assert.h.>
//
//char* my_strcat(char* dest, const char* src)
//{
//	assert(dest && src);
//	char* start = dest;
//	while (*start)
//	{
//		start++;
//	}
//	while (*start++ = *src++);
//	return dest;
//}
//
//int main()
//{
//	char arr1[20] = "abcde";
//	char arr2[] = "fghigklmn";
//	my_strcat(arr1, arr2);
//	printf("%s", arr1);
//	return 0;
//}

#include<stdio.h>
#include<assert.h>

char* my_strstr(const char* dest, const char* src)
{
	assert(dest && src);
	char* start1 = dest;
	char* start2 = src;
	while (*dest)
	{
		start1 = dest;
		start2 = src;
		while (*start1 == *start2)
		{
			if (*(start2 + 1) == '\0')
				return dest;
			start1++;
			start2++;
		}
		dest++;
	}
	return NULL;
}

int main()
{
	char* arr1 = "abcdef";
	char* arr2 = "cd";
	char* ret = my_strstr(arr1, arr2);
	if (ret != NULL)
	{
		printf("%s\n", ret);
	}
	return 0;
}